﻿using System;
using System.Linq;
using BLL;
using COMMON;
using System.Web.UI.WebControls;
using VO;

namespace PopPromotoraCallCenter.Admin
{
    public partial class ConsultaHistoricoSorteio : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            CarregarFiltroCampanha();
            CarregarFiltroAtendente();
            CarregarFiltroCliente();
        }

        #region Metodos

        #region CarregarFiltroCampanha
        protected void CarregarFiltroCampanha()
        {
            var retorno = HistoricoSorteioBLL.SelectHistoricoCampanha();
            if (retorno.Error == Enumerator.Error.Success)
            {
                cblCampanha.DataTextField = "nomeCampanha";
                cblCampanha.DataValueField = "idCampanha";
                cblCampanha.DataSource = retorno.List;
                cblCampanha.DataBind();
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);
        }
        #endregion

        #region CarregarFiltroAtendente
        protected void CarregarFiltroAtendente()
        {
            var retorno = HistoricoSorteioBLL.SelectHistoricoAtendente();
            if (retorno.Error == Enumerator.Error.Success)
            {
                cblAtendente.DataTextField = "NomeAtendente";
                cblAtendente.DataValueField = "idAtendente";
                cblAtendente.DataSource = retorno.List;
                cblAtendente.DataBind();
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);
        }
        #endregion

        #region CarregarFiltroCliente
        protected void CarregarFiltroCliente()
        {
            var retorno = HistoricoSorteioBLL.SelectHistoricoCliente();
            if (retorno.Error == Enumerator.Error.Success)
            {
                cblCliente.DataTextField = "nmCliente";
                cblCliente.DataValueField = "idCliente";
                cblCliente.DataSource = retorno.List;
                cblCliente.DataBind();
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);            
        }
        #endregion

        #region Consultar
        protected void Consultar()
        {
            //Filtro Campanha
            var listCampanha = (from ListItem campanha in cblCampanha.Items where campanha.Selected select int.Parse(campanha.Value)).ToList();

            //Filtro Atendente
            var listAtendente = (from ListItem atendente in cblAtendente.Items where atendente.Selected select int.Parse(atendente.Value)).ToList();

            //Filtro Cliente
            var listCliente = (from ListItem cliente in cblCliente.Items where cliente.Selected select int.Parse(cliente.Value)).ToList();

            //Filtro Data
            DateTime? dataDe = null;
            DateTime? dataAte = null;
            dataDe = Funcao.DateTimeTryParseNull(txtDataDe.Text.Trim());
            dataAte = Funcao.DateTimeTryParseNull(txtDataAte.Text.Trim());

            //Carrega objeto filtro
            var objFiltro = new FiltroHistoricoSorteio();
            objFiltro.idAtendente = listAtendente;
            objFiltro.idCampanha = listCampanha;
            objFiltro.idCliente = listCliente;
            objFiltro.dataDe = dataDe;
            if (dataAte != null)
                dataAte = ((DateTime) dataAte).AddDays(1).AddSeconds(-1);
            objFiltro.dataAte = dataAte;

            //Chama método de consulta
            var retorno = HistoricoSorteioBLL.selectHistoricoSorteioFiltro(objFiltro);

            if (retorno.Error == Enumerator.Error.Success)
            {
                gvHistorico.DataSource = retorno.List;
                gvHistorico.DataBind();
                Accordion1.SelectedIndex = 1;

                //Lista Ranking cliente sorteado
                var retornoRanking = HistoricoSorteioBLL.selectRankingHistoricoSorteioFiltro(objFiltro);
                if (retornoRanking.Error == Enumerator.Error.Success)
                {
                    gvRankingSorteio.DataSource = retornoRanking.List;
                    gvRankingSorteio.DataBind();
                }
                else
                    Funcao.Alert(ClientScript, retornoRanking.Message);

                //Lista Ranking cliente sorteado por Campanha
                var retornoRankingC = HistoricoSorteioBLL.selectRankingCampanhaHistoricoSorteioFiltro(objFiltro);
                if (retornoRankingC.Error == Enumerator.Error.Success)
                {
                    gvRankingSorteioCampanha.DataSource = retornoRankingC.List;
                    gvRankingSorteioCampanha.DataBind();
                }
                else
                    Funcao.Alert(ClientScript, retornoRankingC.Message);
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);
            lblQtd.Text = retorno.List.Count().ToString();
        }
        #endregion

        #endregion

        #region Eventos

        #region btnConsultar_Click
        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            Consultar();
        }
        #endregion

        #region gvHistorico_PageIndexChanging
        protected void gvHistorico_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvHistorico.PageIndex = e.NewPageIndex;
            Consultar();
        }
        #endregion

        #endregion

    }
}